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 に答える