2016-12-27 24 views
-5

字符我使用的是舊的代碼庫&工作跨越「\\」字來:未知「\」在C++

do 
{ 
    string tmpLine; 
    getline(*testcaseFilePtr, tmpLine); 
    testcaseFileLineNumber++; 
    if(tmpLine.size() > 0 && tmpLine[tmpLine.size() - 1] == '\\') 
    { 
    readAnotherLine = true; 
    tmpLine[tmpLine.size() - 1] = ' '; 
    } 
    else 
    { 
    readAnotherLine = false; 
    } 
    line.append(tmpLine); 
} while(readAnotherLine); 

正如我在gdb調試器所看到的,「readAnotherLine」總是轉出在一次迭代之後總是退出,這是錯誤的。

假設我的輸入文件看起來像:

DEFINE xyz; 
DEFINE_MODULE 
{ 
    cout << "Example snippet" << endl; 
    do_this; USER_MACRO (do_that); 
} 

調試器是表示line串含有一次在一個單一的線和在進一步的步驟進行處理。它並沒有將line中的輸入文件的所有行連接在一起。 請提出是否它是一個錯字,或者它可能有一些功能。

在此先感謝您的建議!

+2

歡迎來到Stack Overflow。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –

+1

如果您已經完成了上述步驟,請在您的問題中提供[MCVE]。 –

+0

'tmpLine [tmpLine.size() - 1] =='\\''可以寫成'tmpLine.back()=='\\'' –

回答

3

的代碼尋找在輸入文件中的行,如:

abc\ 
def\ 
ghi 

和將它們讀入一行:abc def ghi。換句話說,尾隨的\正在被視爲連續字符。