c++ - 为什么字符串'text2'的输出为空白?
问题描述
'text1' 是一个句子。我希望“text2”包含“text1”中句子的第一个单词(第一个空格之前的所有字母)。
代码编译成功,但是在执行时,屏幕上没有打印任何内容。
下面是代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i,k,c;
bool done=false;
string text1,text2;
getline(cin, text1);
for(i=0; i<text1.size(); i++)
{
if(text1[i]==' ' && done==false)
{
c=i;
for(k=0; k<i; k++)
{
text2[k]=text1[i-c];
c--;
}
done=true;
}
}
cout<<text2<<endl;
return 0;
}
解决方案
使用text2.push_back(text1[i-c])
(API),因为索引到一个空字符串(这是什么text2
)text2[k]
调用未定义的行为。该索引操作不会更改text2
(或其内容)的长度。
推荐阅读
- mysql - django.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错
- python - 熊猫不根据条件选择列
- telegram - Telegram bot webhook 没有收到新的聊天成员用户名
- javascript - 在 Google 表格中使用命名范围作为变量
- angular - 离子将图像从相机上传到服务器,并带有额外的表单数据
- flutter - 在 Statelss 类上使用函数定义小部件组合的场景是合理的?
- mysql - ModuleNotFoundError:没有名为 'MySQLdb' 的模块与 django 1.10.5
- python - 他们是如何摆脱这个 while true 循环的?
- quickbooks - QBO API 字段名称列表
- vba - 打开 Excel VBA 2016 .xlsm 文件