我正在开发一个程序,当用户输入文本时,他们可以指定如何对齐输出。因此,用户将在此处输入文字,然后询问他们想要的文字对齐方式和宽度(居中,左,右,然后是宽度)。您将如何获得宽度和对齐方式的代码?到目前为止,我只有获取用户输入的代码,但是我不确定如何使用户输入其条件(左,右,中心和宽度)的程序,然后对齐用户给出的输入。这是我到目前为止所得到的。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
vector<string> text;
string line;
cout << "Enter Your Text:(to start a newline click enter. When done click enter 2 times " << endl;
while (getline(cin, line) && !line.empty())
text.push_back(line);
cout << "You entered: " << endl;
for (auto &s : text)
cout << s << endl;
cout << "Enter Left,Center,Right and Width: ";
return 0;
}
我认为也许我必须使用<iomanip>
?但是我觉得还有另一种方式。输入将是这样的。
Hello My Name is Willi
John Doe
and I live in
Kansas.
然后,当用户输入对齐方式时,文本将对齐,也就是说,用户输入的是右侧对齐方式,宽度为10。输出应为,应与右侧对齐(例如在文字处理器中),并且应有一个10个空格的宽度(我假设是空格)。
答案 0 :(得分:0)
这是一种简单的方法。它仅根据对齐方式用空格填充每一行。左对齐基本上是输入文本。您可能还应该检查对齐宽度是否比输入的最长行宽def merge_sorted_list(list1,list2):
i = j = 0
while(i < len(list1) and j < len(list2)):
if(list1[i] > list2[j]):
list1.insert(i, list2[j])
i+=1
j+=1
else:
i+=1
if(j < len(list2)):
list1.extend(list2[j:])
return list1
print(merge_sorted_list([1, 4, 7],[2, 3, 6, 9]))
。
>=
测试用例(实际输出具有空格,而不是#include <iostream>
#include <string>
#include <vector>
int main() {
std::vector<std::string> text;
std::vector<std::string> output;
std::string line;
std::string align;
int width;
std::cout << "Enter Your Text (to start a newline click enter. When done click enter 2 times): \n";
while ( std::getline(std::cin, line) && !line.empty() )
text.push_back(line);
std::cout << "You entered:\n\n";
for ( auto &s : text )
std::cout << s << "\n";
std::cout << "Enter Left,Center,Right and Width: ";
std::cin >> align;
std::cin >> width;
for ( auto &s : text ) {
int diff = width - s.size(),
half = diff / 2;
if ( align == "Right" ) {
output.push_back( std::string(diff, ' ') + s );
} else if ( align == "Center" ) {
output.push_back( std::string(half, ' ') + s + std::string(diff - half, ' ') );
} else {
output.push_back( s );
}
}
std::cout << "Aligned Output: \n\n";
for ( auto &s : output )
std::cout << s << "\n";
return 0;
}
):
输入(alignment = Right,width = 10):
*
输出:
Hello my name is John Doe
输入(alignment = Center,width = 16):
**Hello my ***name is **John Doe
输出:
Hello my name is John Doe