字符串赋值

来源:百度知道 编辑:UC知道 时间:2024/06/03 05:44:23
#include<iostream>
#include<string>
using namespace std;

int main()
{
int i;
string a,b;
cin>>a;
i=0;
while(a[i]!='\0')
{
b[i]=a[i];
i++;
}
b[i]='\0';
cout<<b<<endl;
system("pause");
return 0;
}
为什么不能输出字符串b的值?
不是我不想用b=a啊,而是有一个题目不能直接用啊。

要求输入几行字符串,而每行有几个单词是未知的,
然后给出一个单词,让你判断该单词在哪些行里面出现了。
如:
Graph Floyd
Graph MinimumSpanningTree
DynamicProgramming
然后输入单词Graph,

我的思路是把每行输入的字符串分割成单词,并保存在字符串里面:
先定义一个字符串数组
string b[10];将“Graph”保存在b[0]里面,"Floyd"保存在b[1]里面;
最后用Graph去分别和b[i]进行比较;
但是不行啊 ,还有:字符穿里面保存的不都是指针吗?

你没有给b开空间 怎么向里面放a的东西啊

在while循环前加一句b=new char(sizeof(a));就行了

其实在c++中 不需要自己手动赋值的 直接b=a 就可以了

因为b在申明时并没有任何的长度,所以你的while循环是没有意义的
如果string b("hdjhfjdhjfhdjhfjdhjfhdjfhjdhfjdhfjdhfjdhfjd");
那么在while循环中若a的长度小于b,就会把整个字符串附到b中

其实你这个方法不好,还是C语言的想法.既然你用C++了,就用C++的库函数好了.
对你这个方法只有加一句string *b=new string[100];输出用cout<<*b++;申请一个动态的存储空间.因为b在申明时并没有任何的长度,所以你的while循环是没有意义的

直接可以用b=a就行。