我正在尝试使用字符数组输入一系列单词。我不想使用STL中的字符串。我哪里错了?
int n;
cout<<"Enter the number of words:";
cin>>n;
char **s = new char*[n];
for(int i=0;i<n;i++)
{
char *s = new char[10];
cin>>s[i];
}
答案 0 :(得分:2)
看看char * s = new ...正在初始化。它与s [i]所指的位置不同。
实际上它有两个原因是错的 - 一个是char * s是for循环范围内的新声明,两个是因为它没有被i索引。
我认为你需要s [i] =没有char声明的新char [10],因为s是一个双指针,所以s [i]已经是一个指针。
为这么多编辑道歉,它太晚了......
答案 1 :(得分:1)
使用
char ch[n+1];
for(int i = 0;i<n;i++)
`cin>>ch[i];
ch[n] = '\0';
cout<<ch<<endl;
答案 2 :(得分:1)
通过使用cin到char数组,你很容易遇到缓冲区溢出问题,正如你在https://stackoverflow.com/a/15642881/194717
上看到的那样您可以执行类似下面的代码,但请注意,执行此任务的一种干净方法是使用 vector 和 string :
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cout << "Enter the number of words:";
cin >> n;
//vector<string> list(n);
vector<char[100]> list(n);
// Request from user the words
for (int i = 0; i < n; i++)
cin >> list[i];
// Display the list
//for each (string word in list)
// cout << word << endl;
for (int i = 0; i < n; i++)
cout << list[i] << endl;
return 0;
}