2012-06-08 60 views
2

我有計數問題的反斜槓用C++ \,我有這樣的代碼:找回反斜線()在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!你能解釋爲什麼嗎?以及如何計算/的數量?

+1

您所提供的代碼應爲正斜槓(「/」)工作得很好,但你要記住不要逃避他們在任何地方像你上面反斜線完成(和BTW,你錯過了逃跑的反斜槓「a \ b \ c」 - 它應該是「a \\ b \\ c」。 – Specksynder

回答

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; 
} 
11

你的字符串是無效不是你希望它是什麼 - 它應該是string path = "a\\b\\c";

您還可以得到警告(或至少MSVS提供警告):

警告C4129:「C ':無法識別的字符轉義序列