文件包含以下格式的电话号码列表:
John 23456
Ahmed 9876
Joe 4568
名称仅包含单词,名称和电话号码用空格分隔。编写程序以读取文件并将列表输出为两列。名称应左对齐,数字右对齐。
我能够移除空格并显示它,但无法在输出中对齐它。
#include<iostream>
#include<fstream>
#include<conio.h>
using namespace std;
main()
{
fstream file,f2;
file.open("list.txt",ios::in|ios::out);
f2.open("abcd.txt",ios::out);
file.seekg(0);
char ch,ch1;
file.get(ch);
while(file)
{
ch1 = ch;
file.get(ch);
if( ch == ' ' && ch1 != ' ')
{
f2.put(ch1);
f2.put(' ');
}
if(ch != ' ' && ch1 != ' ')
f2.put(ch1);
}
file.close();
f2.close();
getch();
}
答案 0 :(得分:2)
最简单直接(没有偏执输入格式检查):
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
int main()
{
std::ifstream ifs("list.txt");
std::string name; int val;
while (ifs >> name >> val)
{
std::cout << std::left << std::setw(30) << name <<
std::right << std::setw(12) << val << std::endl;
}
}
输出:
John 23456
Ahmed 9876
Joe 4568
答案 1 :(得分:0)
您可以在输出流上设置适当的标志(f2
是您的输出流)。
请参阅以下文章:
http://www.cplusplus.com/reference/ios/ios_base/width/
对于您的示例,请将cout
替换为f2
,因为它们都是从ios_base
继承的输出流。