user-0 提问: 求教大侠：怎么输入一组字符串？

回复:
user: user-1
content: #include "iostream" #include "string" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { 	string str; 	cin>>str; 	cout<<str<<endl; 	system("pause"); 	return 0; }

user: user-2
content: 引用 12 楼 u011033348 的回复:如果你想实现，输入任意个数的字符串，则可以采用队列： typedef struct Node { pNode next; char str[100]; }Node,*pNode; 然后每添加一个字符串，就生成一个结点，为其动态的为分配堆空间。然后再把这个结点接到队尾。 你如果不太了解这个的话，建议还是看看数据结构相关的书，这是比较基础的用法。 不好意思，很久没用c了，这里结构体定义有错。 typedef struct Node { char str[100]; struct Node* next; }Node,*pNode;

user: user-3
content: 引用不定义数组长度，为所欲为地想输入多少字符串就输入多少字符串？内存和硬盘都是有限的，为所欲为， 想多了。

user: user-2
content: 如果你想实现，输入任意个数的字符串，则可以采用队列： typedef struct Node { pNode next; char str[100]; }Node,*pNode; 然后每添加一个字符串，就生成一个结点，为其动态的为分配堆空间。然后再把这个结点接到队尾。 你如果不太了解这个的话，建议还是看看数据结构相关的书，这是比较基础的用法。

user: user-4
content: 引用 10 楼 call_from_dream 的回复:[quote=引用 1 楼 lovesmiles 的回复:] 都学c++的人了，还用c语言的东西。跳不出这种思维，下面的代码自己试一下。 #include <string> #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std;  int main(void) { 	int i,n=6; 	string str[6];  //定义一个char型指针数组，用于存6个字符串，如6个国家的英文名字  	cout<<"Input 6 country names:\n";  	for (i=0;i<n;i++) 	cin>>str[i]; 	  	for (i=0;i<n;i++) 	{ 		cout<<"country name["<<i<<"] = "<<str[i]<<endl; 	} 	cin>>str[0]; 	return 0; }弱弱地问一句：最后那个 cin>>str[0]; 是什么作用？[/quote] 呵呵，相当于getchar() 暂时停一下给你看下结果。

user: user-0
content: 引用 1 楼 lovesmiles 的回复:都学c++的人了，还用c语言的东西。跳不出这种思维，下面的代码自己试一下。 #include <string> #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std;  int main(void) { 	int i,n=6; 	string str[6];  //定义一个char型指针数组，用于存6个字符串，如6个国家的英文名字  	cout<<"Input 6 country names:\n";  	for (i=0;i<n;i++) 	cin>>str[i]; 	  	for (i=0;i<n;i++) 	{ 		cout<<"country name["<<i<<"] = "<<str[i]<<endl; 	} 	cin>>str[0]; 	return 0; }弱弱地问一句：最后那个 cin>>str[0]; 是什么作用？

user: user-5
content: 引用 3 楼 user-8 的回复:[quote=引用 2 楼 u011033348 的回复:] 你这样的宏定义，我也是第一次见到。。 不过你的问题很简单： char* str[6]; 这里面有 这里定义了指针，但是没有为指针分配空间。 你写成char str[6][100];就好了 正解。[/quote]+1

user: user-0
content: 引用 5 楼 linux_hsylar 的回复://写出这样的代码只是说明你基础有问题。 2楼已经说出原因了， char* str[6]; 你定义的是6个指针变量，你根本没有分配内存，可以说6个指针变量都是野指针；  S("%s",&str[i]);//这句就是问题关键，str[i]只是占用一个指针变量的内存，现在不指向任何内存，你让str[i]用什么接受你输入的字符串。谢谢！

user: user-0
content: 引用 6 楼 u013163178 的回复:/*************************************************************************     > File Name: string_vector.cpp     > Author: Jukay     > Mail: hellojukay@gmail.com      > Created Time: 2014年10月30日 星期四 17时32分03秒  ************************************************************************/  #include<iostream> #include<string> #include<vector> using namespace std;  int main() { 	vector<string> v; 	string s; 	for(int i=0; i < 20; ++i) 	{ 		cin >> s; 		v.push_back(s); 	}  	for(auto a : v) 		cout << a << '\n';  	return 0; } 不知道你学了C++ 没有啊C++学了一点儿，学得不多。谢谢哈！

user: user-6
content: /*************************************************************************     > File Name: string_vector.cpp     > Author: Jukay     > Mail: hellojukay@gmail.com      > Created Time: 2014年10月30日 星期四 17时32分03秒  ************************************************************************/  #include<iostream> #include<string> #include<vector> using namespace std;  int main() { 	vector<string> v; 	string s; 	for(int i=0; i < 20; ++i) 	{ 		cin >> s; 		v.push_back(s); 	}  	for(auto a : v) 		cout << a << '\n';  	return 0; } 不知道你学了C++ 没有啊

user: user-7
content: //写出这样的代码只是说明你基础有问题。 2楼已经说出原因了， char* str[6]; 你定义的是6个指针变量，你根本没有分配内存，可以说6个指针变量都是野指针；  S("%s",&str[i]);//这句就是问题关键，str[i]只是占用一个指针变量的内存，现在不指向任何内存，你让str[i]用什么接受你输入的字符串。

user: user-0
content: 引用 2 楼 u011033348 的回复:你这样的宏定义，我也是第一次见到。。 不过你的问题很简单： char* str[6]; 这里面有 这里定义了指针，但是没有为指针分配空间。 你写成char str[6][100];就好了那个宏定义是为了练习用的，有和没有，对这个程序完全没影响。抱歉啊，误导你了！

user: user-8
content: 引用 2 楼 u011033348 的回复:你这样的宏定义，我也是第一次见到。。 不过你的问题很简单： char* str[6]; 这里面有 这里定义了指针，但是没有为指针分配空间。 你写成char str[6][100];就好了 正解。

user: user-2
content: 你这样的宏定义，我也是第一次见到。。 不过你的问题很简单： char* str[6]; 这里面有 这里定义了指针，但是没有为指针分配空间。 你写成char str[6][100];就好了

user: user-4
content: 都学c++的人了，还用c语言的东西。跳不出这种思维，下面的代码自己试一下。 #include <string> #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std;  int main(void) { 	int i,n=6; 	string str[6];  //定义一个char型指针数组，用于存6个字符串，如6个国家的英文名字  	cout<<"Input 6 country names:\n";  	for (i=0;i<n;i++) 	cin>>str[i]; 	  	for (i=0;i<n;i++) 	{ 		cout<<"country name["<<i<<"] = "<<str[i]<<endl; 	} 	cin>>str[0]; 	return 0; }