問題的開始:
在編譯原理的詞法分析器中,進行字串相加時出現了報錯的情況,**和報錯如下:
//str是字元型指標
string pstr=*(str+i)+*(str+(i+1));
報錯提示為:
c:\users\zwx\desktop\test.cpp|130|error: conversion from 'int' to non-scalar type 'std::__cxx11::string ' requested|
正常情況下,我們習慣於使用string過載的+運算來實現字串的拼接或者是字串和字元之間的拼接,但是,我們要注意,在c/c++中編譯器會存在把單個的字元識別為int型別的值,所以在上段**中編譯器會把第二個字元識別為int,相當於是把int轉成string了,當然,解決辦法也簡單,最基本的就是讓編譯器知道我這個是個字元或者單個字元的字串就好了,但是如果你的思路如下
//str是字元型指標
string pstr=(""+*(str+i))+(""+*(str+(i+1)));
也會出現錯誤,報錯提示為:
c:\users\zwx\desktop\test.cpp|130|error: invalid operands of types 'const char' and 'const char' to binary 'operator+'|
這當然是因為過載的+不適用於const char* "" 和單個字元相加咯。
解決方法:
1.通過單個加,告訴編譯器,加上的是字元而不是int
string test="";
test+=('a');
test+=('b');
字串相加
題目 給定兩個字串形式的非負整數num1和num2,計算它們的和。注意 num1和num2的長度都小於 5100.num1和num2都只包含數字0 9.num1和num2都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式 分析 注意幾個方面 1 迴...
字串相加
給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注意 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。分析雙指標分別...
字串相加
給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注意 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。class s...