[英]Remove \r from a string in C++
在C ++程序中,有一點是它讀取一個字符串,如:
"NONAME_1_1\r"
\\r
給我帶來了麻煩。 我想它打印或添加類似“^ M”的東西。 這樣對嗎? 無論如何,它讓我陷入困境,我想擺脫它。
我無法修改輸入。 我想我怎么能在這一點上使用C ++,以最簡單的方式,為這個字符串刪除\\r
。
我知道如何在bash上做到這一點,但對C ++沒有任何線索。
謝謝。
我假設通過字符串,你的意思是std::string
。
如果它只是需要刪除的字符串的最后一個字符,則可以執行以下操作:
mystring.pop_back();
mystring.erase(mystring.size() - 1);
編輯: pop_back()
是C ++的下一個版本,抱歉。
有些檢查:
if (!mystring.empty() && mystring[mystring.size() - 1] == '\r')
mystring.erase(mystring.size() - 1);
如果要刪除所有\\r
,您可以使用:
mystring.erase( std::remove(mystring.begin(), mystring.end(), '\r'), mystring.end() );
這取決於你如何將它保存在內存中:
'\\r'
。 '\\r'
替換為'\\0'
。 在unix和windows之間移動文件后從文件中讀取行時,這是一個常見問題。
您可以運行“dos2unix”或“unix2dos”來轉換文件中的行。
如果您希望保持原始字符串不變,並且您希望在此示例中刪除多個字符(如CR和LF),則copy_if非常有用。
const std::string input = "Hello\r\nWorld\r\n";
std::string output;
output.reserve(input.length());
std::copy_if(input.begin(), input.end(),
std::back_inserter(output),
[] (char c) { return c != '\r' && c != '\n'; });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.