我正在尝试用户在动态分配的字符串数组中获取值。我正在尝试使用for
/ while
- 循环,以便每当用户输入字符串"!"
时,字符串的读取就会结束。
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int main()
{
int b=1;
int top=0;
string * a=new string[b] ;
cin>>a[b];
top++;
while(a[b]!="!")
{
if(top==b)
b++;
cin>>a[b];
top++;
}
答案 0 :(得分:0)
如果你要使用标准类std :: string,那么它会更简单。 如果要谈论字符数组,那么方法是分配固定大小的字符数组。当输入的字符数超过数组大小时,则重新分配数组,增加其大小,并复制新数组中当前数组的元素。
例如
const size_t N = 10;
char *s = new char[N];
char c;
size_t size = N;
size_t i = 0;
while ( std::cin >> c && c != '!' )
{
if ( i == size - 1 )
{
char *p = new char[size + N];
std::copy( s, s + size - 1, p );
delete []s;
s = p;
size += N;
}
s[i++] = c;
}
.
s[i] = '\0';
答案 1 :(得分:0)
回答问题的标题,
“我希望用户在动态分配的字符串数组中通过使用for循环或while循环获取值,当用户输入”!“时,它将结束。”
std::string
是获取动态分配字符串的好方法,可以自动分配和释放缓冲区。
std::vector
是一个不错的通用动态大小数组。
所以,你可以尝试这样的东西(从袖口代码开始):
using namespace std;
vector<string> lines;
for( ;; )
{
string line;
getline( cin, line );
if( line == "!" ) { break; }
lines.push_back( line );
}
// Do something with the lines