C++从字符串里读取部分内容的问题

比方有个char数组,它的值是:
...
aaa:10\n
bbb:20\n
ccc:30\n
...

每一行表示一项的数值,行数是不确定的,但是类似bbb这样的提示是唯一的,现在我怎么把bbb:20中的值20读到char bbb[3]里面?

方法1:用字符串流:
//---------------------------------------------------------------------------
#include <sstream>
#include <iostream>
#include <string>

int main(void)
{
std::stringstream a;
std::string at;
char ch[3];/*用于保存读取到的数字字符*/
char cstr[][10]={"aaa:10\n","bbb:20\n","ccc:30\n"};
for (int i=0; i!=3; i++) {
a.str(cstr[i]);
a.ignore(10,':'); /*前面的字符与后面的数字用冒号分隔,前面的字符最多10个*/
a>>ch>>"\n"; /*将数字输出到ch字符数组中,数字后面是一个'\n'*/
a.clear();
std::cout<<ch<<std::endl; /*输出ch字符数组中的数字字符*/
}

return 0;
}
//---------------------------------------------------------------------------

方法2.用C语言函数sscanf
//---------------------------------------------------------------------------
#include <cstdio>

using namespace std;
int main(void)
{
char ch[3]; /*用于保存读取到的数字字符*/
char cstr[][10]={"aaa:10\n","bbb:20\n","ccc:30\n"};
int i;
for (i = 0; i<3; i++) {
sscanf(cstr[i],"%*[^0123456789]%[0123456789]",ch);
printf("%s\n",ch); /*输出读取到的数字字符*/
}

return 0;
}
//---------------------------------------------------------------------------
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-19
可以取子串
C++里面的
类似:
a.substring(5,6)
从字符串a中取一个字符串:从第5个开始到第6个字符结果
第2个回答  2008-11-20
没有完全清楚你的意思,试着写了点代码,希望能给你点启发。
char ch[3][10]={"aaa:10\n","bbb:20\n","ccc:30\n"};
char aaa[3],bbb[3],ccc[3];
sscanf(ch[0], "aaa:%s", aaa);
sscanf(ch[1], "bbb:%s", bbb);
sscanf(ch[2], "ccc:%s", ccc);
相似回答