我在检测到两个' //'时遇到了一些麻烦。作为一个字符,然后删除第一个' /'直到行尾(我猜这个/ n在这里使用)。
{
ifstream infile;
char comment = '//';
infile.open("test3.cpp");
if (!infile)
{
cout << "Can't open input file\n";
exit(1);
}
char line;
while (!infile.eof())
{
infile.get(line);
if (line == comment)
{
cout << "found it" << endl;
}
}
return 0;
}
在test3.cpp文件中有三条注释,因此有3批&#39; //&#39;。但是我无法检测到双斜杠并且只能检测到一个/哪个会影响c ++文件的其他部分,因为我只想从注释的开头删除到该行的末尾?
答案 0 :(得分:0)
我在检测到两个&#39; //&#39;时遇到了一些麻烦。作为一个char
那是因为//
不是一个角色。它是两个字符的序列。字符序列称为字符串。您可以使用双引号创建字符串文字:"//"
。
一个简单的解决方案是将流中的当前输入字符与字符串"//"
的第一个字符'/'
进行比较。如果匹配,则将流中的下一个字符与搜索的字符串中的第二个字符进行比较。如果您连续找到两个'/'
,则表示您有匹配。或者您可以聪明并将整行读入std::string
并使用成员函数来查找它。
此外:
while (!infile.eof())
{
infile.get(line);
// using line without testing eof- and badbit
这段代码错了。您在读取流之前测试eofbit 并处理输入。
您选择line
变量的名称有点令人困惑,因为它并不包含整个变量。但只有一个字符。