我的代碼有問題。這是一個小型的學校項目,我希望通過將控制檯窗口中的字符串重定向到「.txt」文件來加強它。我的問題是,我只得到最後一個字符串printet。所以我的猜測是我一直覆蓋CoolNumber.txt文件,但是我看不到改變的地方,所以我不覆蓋,只是添加到文件中。將cout重定向到文件C++
我的代碼如下所示:
#include <iostream>
#include <string.h>
#include <sstream>
#include <fstream>
using namespace std;
string intToChar[10] = {
"0",
"1",
"2abc",
"3def",
"4ghi",
"5jkl",
"6mno",
"7pqrs",
"8tuv",
"9wxyz"
};
void CoolNumber(string number, string character)
{
ofstream file;
file.open("CoolNumber.txt");
streambuf* sbuf = cout.rdbuf();
cout.rdbuf(file.rdbuf());
if (number == "")
{
cout << character << ", " << endl;
}
else
{
int length = intToChar[number[0]-'0'].size();
for (int i = 0; i < length; i++)
{
stringstream ss;
char c = intToChar[number[0]-'0'][i];
string s;
ss << c;
ss >> s;
CoolNumber(number.substr(1, number.size()), character + s);
}
}
}
int main()
{
string number = "27529250";
cout << "Type your mobilenumber: ";
cin >> number;
//int length = intToChar[5].length();
//cout << length << endl;
CoolNumber(number, "");
}
我知道我的代碼的工作原理是COUT到一個控制檯窗口,如果沒有這個代碼寫
ofstream file;
file.open("CoolNumber.txt");
streambuf* sbuf = cout.rdbuf();
cout.rdbuf(file.rdbuf());
這將是真棒得到此代碼工作。
P.s.我曾嘗試在StackOverflow上查看其他主題,但似乎找不到任何對我更好的方法。
反正我沒有得到你想要達到的目標。你不能只輸出到文件流? – 2014-11-01 11:51:43
在每次遞歸調用中,您都打開文件進行寫入,清除它。 – 2014-11-01 11:59:47