为什么会出现转换功能错误?

时间:2019-07-27 07:45:52

标签: c++ strlen file-read

我必须读取一个名为text.txt的外部文件。该文件可能包含很多数据(并且def> 83个字符),我想忽略空格。然后,我需要获取文件中字符的总数(不包括空格)。我必须使用strlen。我收到一个转换类型错误,这很令人困惑,因为我认为strlen返回一个int。错误发生在strlen(inputString)上,更具体地说是在(inputString)上。

int main(){

fstream inFile;
string inputString;

inFile.open("text.txt", ios::in);

if (inFile) {
    getline(inFile, inputString, ' ');
    while (inFile)
    {
        int tempStringLength = strlen(inputString);
        int total = 0;
        total += tempStringLength;
    }
}
else
    cerr << "Unable to open file text.txt";
    exit(1);

    return 0;

}

我希望总数为文件中字符总数。

1 个答案:

答案 0 :(得分:0)

strlen函数返回一个size_t结果,该结果通常等同于您平台上的unsigned int

此外,我还没有尝试您的代码,但是它看起来像一个无限循环。您可能需要像下面这样重新排列它:

int main() {

fstream inFile;
string inputString;

inFile.open("text.txt", ios::in);

unsigned int total = 0;
if (inFile) {
    while (inFile)
    {
        getline(inFile, inputString, ' ');

        unsigned int tempStringLength =inputString.length();
        total += tempStringLength;

        //Or maybe combine the two previous statements into:
        //total += inputString.length();
    }
}
else
    cerr << "Unable to open file text.txt";
    exit(1);

    return 0;
}

P.S .:此外,strlen期望输入char[]。我已将其更改为string.length()