【发布时间】:2012-03-14 13:33:25
【问题描述】:
我有这个代码....
file_parser::file_parser(string file){
txtfile.open(file.c_str(), ios::in);
if (!txtfile.good()){
string error=err(0," "+file+" not found. Exit code ",1);
throw file_parse_exception(error);
}
while (!txtfile.eof()){
char str[200];
txtfile.getline(str, 200);
string str2=str;
vfile.push_back(str2);
}
txtfile.close();
}
问题是,如果我在输入文件中有一行超过 200 个字符,它会挂起然后崩溃。我在崩溃时检查了 str 的值,它前面是一个空字符,然后它尝试将一个空(未初始化)字符串推回导致挂起/崩溃的向量上。有谁知道解决这个问题的方法?我认为通过使用 getline 它会在 199(+null) 个字符处截断 char 数组,但显然这没有发生。我难住了。问题是我希望每次回击最多有 200 个字符。我真的不想要'string str'会做的整条线。如果一行超过 200 个字符,则应读取前 200 个字符,然后继续下一行。
【问题讨论】:
-
是
vector<std::string>还是vector<const char*>? -
我应该提到我正在使用命名空间 std。只是为了让我们都清楚。
-
它是向量
(标准隐含)
标签: c++ arrays string char getline