【发布时间】:2018-07-18 18:23:06
【问题描述】:
我试图使用 find() 和 substr() 输出文件中的特定行,只是为了看看它是否有效。如您所见,我是个初学者,因此我将不胜感激任何有关我的代码的 cmets 或提示。
inFile.open("config.txt");
string content;
while (getline(inFile, content)){
if (content[0] && content[1] == '/') continue;
size_t found = content.find("citylocation.txt");
string city = content.substr(found);
cout << city << '\n';
}
【问题讨论】:
-
find每次都会失败,除了匹配的一行。使用前需要检查found。 -
content[0] && content[1] == '/'这不会检查行是否以//开头。它检查(content[0]) && (content[1] == '/')。 -
content[0]也不检查该行是否为空。未定义的行为,有崩溃的可能性。 -
此外,我非常有信心,即使该行至少有两个字符,
content[0] && content[1] == '/'也不会像您认为的那样做。我重复一遍,它不不检查该行中的前两个字符是否为斜杠,正如您可能的意图那样。 C++ 不能以这种方式工作。 -
天哪,三个 cmets 说
content[0] && content[1] == '/'没有做你想做的事,但是三个都没有说如何编写那个测试。欢迎来到 StackExchange!如果您知道content中至少有两个字符,那么您应该检查content[0] == '/' && content[1] == '/'。