2013-10-07 32 views
0

我剛開始學習C++,並試圖設置手動位置來創建文件,但是我在這裏遇到了一些麻煩。使用qt C++設置手動位置並創建文件

你有什麼想法解決這個問題?

int main() 
{ 
    char location; 
    std::cin>>location; 
    QFile file("location"); 
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) 
     return 1; 
    QTextStream out(&file); 
    out << "The magic number is: " << 49 << "\n"; 
} 
+0

從我個人的經驗學習C++第一次,然後開始使用Qt框架(如果你需要它)是一種更簡單的方法。 Qt框架的細節可能會讓學習C++變得更加困難。 – Simon

回答

0

您的變量位置只有一個字符,而不是字符串。 如果你想使用Qt,那麼你應該使用它的容器(QString)。 在這裏,您嘗試創建位置current_dir /位置(原因爲「」)的文件,但不是存儲在您的變種中的位置。

QFile file("location"); 

您沒有Qt所需的QApplication(或QConsoleApplication)。 您應該從Qt應用程序創建的基礎知識入手。

0

我會重新寫在下面的方式代碼:

int main() 
{ 
    std::string location; // this should store the file location 
    std::getline(std::cin, location); // read user input for file location 
    QFile file(location); 
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) 
     return 1; 
    QTextStream out(&file); 
    out << "The magic number is: " << 49 << "\n"; 
    return 0; 
} 
1

有一些需要解決的幾個問題。

  1. 使用#include包括必要的頭文件
  2. A「字符」類型變量持有隻有一個字符,例如'一個'。你需要使用std :: string或者QString。
  3. 要使用變量,請不要用引號括起來。例如使用位置而不是「位置」。
  4. 完成後始終關閉文件。
  5. 確保您的函數始終返回預期值。在這裏它應該返回一個整數。

所以,你的代碼可以固定獲得這個:

#include <string> 
#include <iostream> 
#include <QFile> 
#include <QTextStream> 

int main() 
{ 
    std::string location; 
    std::cin >> location; 
    QFile file(location.c_str()); 
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) 
     return 1; 
    QTextStream out(&file); 
    out << "The magic number is: " << 49 << "\n"; 
    file.close(); 
    return 0; 
} 
2

其他答案已經拿起大多數問題。我想指出的是,您可以使用Qt的文本流訪問標準輸入和標準輸出,只是爲了保持所有Qt。如果你想靜態鏈接你的項目 - 你不需要鏈接C++流和字符串,它可以幫助執行文件的大小。

#include <QFile> 
#include <QString> 
#include <QTextStream> 
#include <cstdio> 

int main() 
{ 
    QTextStream in(stdin), out(stdout); // the input and output streams, Qt way 
    out << "Enter file location: " << flush; 
    QString location = in.readLine(); // this should store the file location 
    QFile file(location); 
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) 
     return 1; 
    QTextStream fout(&file); 
    fout << "The magic number is: " << 49 << "\n"; 
    return 0; 
} 
相關問題