2010-02-09 34 views
11

Tôi đang học C++ lần đầu tiên. Tôi không có nền tảng lập trình trước đó.C++ Lẫn lộn. Đọc số nguyên từ tệp văn bản. Chuyển đổi thành ASCII

Trong sách tôi đã xem ví dụ này.

#include <iostream> 

using::cout; 
using::endl; 

int main() 
{ 
    int x = 5; 
    char y = char(x); 

    cout << x << endl; 
    cout << y << endl; 

    return 0; 
} 

Ví dụ có ý nghĩa: in một số nguyên và biểu diễn ASCII của nó.

Bây giờ, tôi đã tạo tệp văn bản có các giá trị này.

48 
49 
50 
51 
55 
56 
75 

Tôi đang viết chương trình để đọc tệp văn bản này - "theFile.txt" - và muốn chuyển đổi các số này thành giá trị ASCII.

Đây là mã tôi đã viết.

#include <iostream> 
#include <fstream> 

using std::cout; 
using std::endl; 
using std::ifstream; 

int main() 
{ 
    ifstream thestream; 
    thestream.open("theFile.txt"); 

    char thecharacter; 

    while (thestream.get(thecharacter)) 
    { 
     int theinteger = int(thecharacter); 
     char thechar = char(theinteger); 
     cout << theinteger << "\t" << thechar << endl; 
    } 


    system ("PAUSE"); 
    return 0; 
} 

Đây là hiểu biết của tôi về chương trình thứ hai được hiển thị.

  • Trình biên dịch không biết loại dữ liệu chính xác được chứa trong "theFile.txt". Kết quả là, tôi cần phải xác định nó vì vậy tôi chọn để đọc dữ liệu như một char.
  • Tôi đọc từng chữ số trong tệp dưới dạng char và chuyển đổi nó thành giá trị số nguyên và lưu trữ nó trong phần "theinteger".
  • Vì tôi có một số nguyên trong "theinteger", tôi muốn in ra như một ký tự nhưng char thechar = char (theinteger); không hoạt động như dự định.

Tôi đang làm gì sai?

+0

Vì vậy, chương trình của bạn * làm gì ngay bây giờ? – Sam

+0

Không nên là 'sử dụng std :: cout;'? – Manuel

+0

Cảm ơn vì đã nhận thấy sai lầm của tôi. Tôi đã đặt sai mã. Sẽ cập nhật nó sau vài phút nữa. – newbie

Trả lời

2

Bạn đang đọc một thẻ một lần từ tệp. Do đó, nếu tập tin của bạn có chứa:

2424 

Trước tiên, bạn sẽ đọc char "2" từ tập tin, chuyển nó sang một int, và sau đó trở lại một char, mà sẽ in "2" trên cout. Vòng tiếp theo sẽ in "4", v.v.

Nếu bạn muốn đọc các con số như số đầy đủ, bạn cần phải làm điều gì đó như:

int theinteger; 
thestream >> theinteger; 
cout << char(theinteger) << endl; 
+0

Ồ, tôi hiểu rồi. Một (char) acter là một đĩa đơn. Ôi trời vì lỗi lầm của tôi. – newbie

6

Bạn đang đọc char bởi char, nhưng bạn thực sự (tôi nghĩ) muốn đọc từng chuỗi các chữ số dưới dạng số nguyên. Thay đổi vòng lặp của bạn thành:

int theinteger; 
while (thestream >> theinteger) 
{ 
    char thechar = char(theinteger); 
    cout << thechar << endl; 
} 

+1 Đối với một định dạng rất độc đáo & thể hiện câu hỏi đầu tiên, BTW!

+0

Có, bạn là chính xác, Neil. Tôi muốn đọc từng số một. Mỗi số nằm trên một dòng riêng. Nó có phổ biến để làm cho những cái nhìn như thế này như trong bạn có ý định làm một cái gì đó nhưng bạn sử dụng các lệnh không chính xác? Tôi hy vọng điều đó đúng. – newbie

Các vấn đề liên quan