参考:https://www.cnblogs.com/inmoonlight/p/5512878.html 要点 理解汉字的输入和输出方式:在GBK编码的情况下,一个汉字占据两个字节,在输出的时候, 例:char str[] 中储存了“中”一个字,输出
参考:https://www.cnblogs.com/inmoonlight/p/5512878.html
要点
- 理解汉字的输入和输出方式:在GBK编码的情况下,一个汉字占据两个字节,在输出的时候,
例:char str[] 中储存了“中”一个字,输出的时候cout<<str[0]<<endl;和cout << str[1] << endl;不会在控制台上输出字符。cout << str[0] << str[1] << endl;会输出一个“中”字。
string中保存:
st = “”;
st = st + s[0] + s[1];
//直接st = s[i] + s[i+1];不行 (为什么?
) - 需要处理的有成对的汉字符号:“ ”,而且可能前一个是全角,后一个是半角;
需要处理的字符可能是两个英文字符合并成单个中文字符:<< 《;
以上两点需要用一个两位的字符串来判断,第一点还需要计数器辅助判断输出“还是”。 - 并不需要真正在字符数组中替换掉,只需要检测出有需要替换的字符,将其替换成需要的字符输出即可。
- gets()函数获取所有缓冲区域的内容,遇到换行符或者到文章末尾结束(
getline()函数功能类似?参考https://blog.csdn.net/qq_42128241/article/details/81772875
)无法理解问题中所说的一段文字可以包含换行符,是换行符并不代表一段文字结束吗?这样的话gets()不就无法获取换行符之后的字符了吗?