2017-08-24 79 views
0

我遇到了一些麻煩,將回車值傳遞給std :: string函數。如何比較字符串與回車0x0D?

std::string parsedWord; 
size_t found = str.find_first_not_of(' '); 
if (found == std::string::npos) std::cout << "No non-whitespace characters found\n"; 
    else 
     { 
      while (str.compare(found, 1, " ") || str.compare(found, 1, 0x0D) 
    // The last argument should be a const char*. 
      { 
        parsedWord += str[found]; found++; 
      } 
     } 

我特別要比較的值0X0D,因爲在Windows系統上新的生產線是CR LF和其他系統使用不同的類型,我只是想覈對0X0D

+0

如何將它解析爲字符,比如'char(0x0D)'? – Sma

+2

你有'\ r'和'\ n'字符用於結束行回車字符......但爲什麼不簡單地使用處理所有空格的isspace函數 –

+0

你有什麼循環的目的?刪除空格?然後我建議你檢查'compare'函數[*返回*](http://en.cppreference.com/w/cpp/string/basic_string/compare#Return_value)。 –

回答

3

試試這個

while (str.compare(found, 1, " ") || str.compare(found, 1, "\r") 
+0

但是,我怎麼知道「\ r」是什麼?系統之間它是CR LF,LF CR,只是CR,這真是令人困惑。我試過類似於const char * =&((const char)0x0D)但是沒有運氣 – Zebrafish

+0

也許給出一個解釋它是如何工作的? IE瀏覽器。 '\ r'是什麼? – tambre

+0

@斑馬魚'\ r'是回車符。它總是一樣的。 '\ n'是新的一行字符。有些系統組合使用(即Windows),有些只使用新的行字符(即Linux)。 – tambre