level 8
用string储存是可以直接储存一个词组的,比如”你好“;但我如果想提取”你“字,应该怎么做?
2015年10月15日 15点10分
1
level 5
我认为最好的解决方案为→_→:
string str[] = {"你","好"};
const char *ch[] = {"你","好"};
cout << str;
cout << *ch;
→_→wchar_t 类型也是可以的,但是输出输入要加个w 作为前缀
2015年10月16日 02点10分
3
毕竟 string [0] 是char 类型,一个char 只有一字节,咋存储中文
2015年10月16日 02点10分
你觉得初始2个字够了么。。。。。。
2015年10月16日 02点10分
@shchaox ”你好“ 是const char* →_→非char
2015年10月16日 02点10分
回复
@天行者wing :大哥,我是楼主啊………………我连着输入中文,但我想每个字分别储存,你总不能让我打一个字再打一个空格吧
2015年10月16日 02点10分
level 5
回复 shchaox :→_→如果你是想将txt 文件的字分解成一个个的话,可以,一个全角符号 占用2字节,也就是说,你可以 string str = "你好"; cout << str[0] << str[1] << endl; 来输出一个你╮(╯▽╰)╭
2015年10月16日 03点10分
6
我要提取一个字放入另一个string里……,不是从文本读取,就是临时输入,然后根据条件分别储存
2015年10月16日 03点10分
@shchaox 就是输入一段中文句子,然后分解为:一个个中文字么
2015年10月16日 03点10分
@shchaox ╮(╯▽╰)╭先吃饭,下午再说说
2015年10月16日 03点10分
level 13
//如果你不确定str里到底有没有英文字母, 你就用这个
//2015-10-16
//以上两则都在VS2015 Unicode 字符集上测试通过
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
char str1[3];
unsigned char* pUnsgnStr = (unsigned char*)str.c_str();
int flag = 0;
for (int i = 0; i < strlen(str.c_str()); ++i)
{
if (pUnsgnStr[i] > 0xa0 && pUnsgnStr[i] != 0)
{
if (1 == flag)
{
str1[0] = pUnsgnStr[i - 1];
str1[1] = pUnsgnStr[i];
str1[2] = 0;
cout << str1 << endl;
++i;
}
else
{
++flag;
}
}
else if(0 == str[i])
{
break;
}
else
{
cout << pUnsgnStr[i]<<endl;
}
}
return 0;
}
2015年10月16日 04点10分
9
level 14
这要看你的文件的编码方式的,如果你用vs的话,只能用ANSI或unicode,如果用gcc还可以用utf8,所以如果是Windows程序还是乖乖的用unicode的wstring,如果想跨平台肯定要写编码转换的。
2015年10月16日 05点10分
13
level 1
这里有汉字编码的问题.一个汉字是占两位char的,也就是说你要把string[0]和string[1]放一起
2015年10月16日 05点10分
15