为什么我会收到转换函数错误

Why am I getting a conversion function error?

本文关键字:转换 函数 错误 为什么      更新时间:2023-10-16

我必须在一个名为text.txt的外部文件中读取。该文件可能包含大量数据(def> 83 个字符(,我想忽略空格。然后我需要获取文件中的字符总数(不包括空格(。我必须使用斯特伦。我收到一个转换类型错误,这令人困惑,因为我认为 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;

}

我希望总数是文件中字符的总数#。

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;
}

PS:另外,strlen希望输入char[]。我已将其更改为string.length()