2

\我对C++ 中反斜杠的计数有疑问,我有以下代码:

string path = "a\b\c";
int level = 0;
int path_length = path.size();
for(int i = 0; i < path_length; i++){
if(path.at(i) == '\\'){
        level++;
    }
}
cout << level << endl;

但是,级别始终为0!你能解释一下为什么吗?以及如何计算数量/

4

2 回答 2

11

你的字符串是无效的不是你所期望的——它应该是string path = "a\\b\\c";

您甚至会收到警告(或至少 MSVS 提供警告):

警告 C4129:“c”:无法识别的字符转义序列

于 2012-06-08T10:59:36.543 回答
9

变量中的反斜杠应该被转义。

string path = "a\\b\\c";

您也可以使用count算法库中的函数来避免循环字符串中的每个字符并检查它是否是反斜杠。

#include <iostream>
#include <string>
#include <algorithm>   // for count()
using namespace std;

int main()
{
string path = "a\\b\\c";
int no_of_backslash = (int)count(path.begin(), path.end(), '\\');
cout << "no of backslash " << no_of_backslash << endl;
}
于 2012-06-08T11:20:30.090 回答