使用 c++,为什么我知道它不是时会收到错误消息“字符串下标超出范围”?或者至少看起来是这样



EDIT - 没有空行。编辑 2 - 我的错,似乎我一直都错了。某处有一个空行,尽管 csv 文件另有指示。它现在正在工作。好的,这是整个(短)程序:

#include <iostream>
#include <cctype>
#include <string>
#include <fstream>
using namespace std;
int main(){
    char a;
    string stringmanip;
    fstream myfile("readthisfile.csv");
    if (myfile.is_open()){
        while ( myfile.good() ){
            getline(myfile,stringmanip);
            a=stringmanip[0];
        }
        myfile.close();
    }
    else cout<< "Unable to open file";
    return 0;
}

这对我来说毫无意义。我可以复制stringmanip,我可以cout stringmanip,我可以将.substr与stringmanip一起使用。如果我定义一个常规字符串,我可以很好地使用 [] 操作。我也尝试过 .at,但这只会导致另一个错误。(超出范围)。

任何帮助将不胜感激。对不起,我是一个初学者,我相信你能看出来。

谢谢本

如果 readthisfile.csv 在文件末尾(或文件中的任何位置)有一个空行,那么你将得到一个空字符串。不能取消引用空字符串的第 0 个字符。 string::operator[]只接受从0string::length() - 1的索引。如果字符串为空,则对string::operator[]的任何调用都将导致未定义的行为。

最新更新