如何让我的代码以不会切断单词(字符串)的方式运行?
How do I get my code to run in a way that won't cut off the words(strings)?
这个程序的目标应该是生成一个输出字符串,使得:
- 输出字符串 + 介于 == 之间的空格 == 宽度。
- 字符串不会被切断。因此,它每行给出完整的单词。
这是我到目前为止所拥有的:
int main()
{
int width= 15;
vector<string> line;
line.push_back("Hello");
line.push_back("My");
line.push_back("Name");
line.push_back("Is");
line.push_back("John");
auto s = line.front();
for (auto i = std::size_t {1}; i < line.size(); ++i) s += ' ' + line[i];
for (size_t i = 0; i < s.length(); i+=width+1)
{
s.insert(i,"n");
}
cout<<s;
}
我不想在单词之间均匀地添加空格,这样最后一个字符串就不会被截断并移动到下一行。
这类似于C++案文充分理由的问题。但我想纠正我自己的实现以解决此问题.
您正在做的是在字符串已经形成后将新行插入字符串,从而可能将单词剪切到新行。
如果在添加另一个单词之前插入一个新单词,最好检查字符串的长度是否会大于行的所需宽度。
这就是我能想到的
int main()
{
int width= 15;
vector<string> line;
line.push_back("Hello");
line.push_back("My");
line.push_back("Name");
line.push_back("Is");
line.push_back("John");
std::string s {};
for (int i {0}; i < line.size(); ++i)
{
if( (s + line[i] + " ").size() <= width)
{
s += line[i] + " ";
}
else
{
s += "n" + line[i] + " ";
width += width;
}
}
cout<<s;
}
相关文章:
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- C++-字符串是否包含一个带有简单循环的单词
- 在C++中查找(奇怪的)字符串中的单词
- 当字符串是某个单词时给出输出?
- 替换字符串中的单词,但忽略引号中的单词
- 替换字符串位置 X 中的单词C++
- 视觉C++使用 map 来比较字符串中的每个单词
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 输出返回编号。等于输入字符串的单词的字符串数
- 在字符串的每个单词的末尾插入字符串
- 分析字符串中的双精度和单词
- 如何使用运算符>>在自定义字符串中输入多个单词?
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- C++读取大文件并将其保存到字符串中,然后删除特定的随机单词
- 字符串单词的唯一哈希值
- 使用std :: string ::比较(C )的字符串/单词操纵
- 如何比较字符串单词和聊天猜测
- 用C++计算文本文件中的相同字符串/单词