2012-03-02 21 views
-2
#include <iostream> 
#include <stdlib.h> 
using namespace std; 
int main() 
{ 
    string a; 
    cin>>a; 
    float v=strtof(a.c_str(),NULL); 
    cout<<v; 
} 

上面的代碼在g ++編譯器中有效。但在gcc報告下面的錯誤。在gcc中浮動的字符串

/tmp/ccz60ueB.o: In function `main': 
test1.cpp:(.text+0x12): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' 
test1.cpp:(.text+0x21): undefined reference to `std::cin' 
test1.cpp:(.text+0x26): undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' 
test1.cpp:(.text+0x32): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' 
test1.cpp:(.text+0x55): undefined reference to `std::cout' 
test1.cpp:(.text+0x5a): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(float)' 
test1.cpp:(.text+0x66): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' 
test1.cpp:(.text+0x81): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' 
/tmp/ccz60ueB.o: In function `__static_initialization_and_destruction_0(int, int)': 
test1.cpp:(.text+0xac): undefined reference to `std::ios_base::Init::Init()' 
test1.cpp:(.text+0xb1): undefined reference to `std::ios_base::Init::~Init()' 
/tmp/ccz60ueB.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0' 
collect2: ld returned 1 exit status 
+7

你爲什麼要用C編譯器編譯C++程序? – Mysticial 2012-03-02 04:55:47

+1

你也需要'#include ' – 2012-03-02 04:58:35

+0

你期望它做什麼?你不能編寫C++,然後用C編譯器編譯它。試着用Java編譯器編譯它,你會有同樣的運氣。 – 2012-03-02 04:59:30

回答

4

你必須使用G ++(或任何C++編譯器),所以它與庫std的C++版本的鏈接。您不應該嘗試使用C編譯器編譯C++代碼。

+1

事實上,OP可以使用*任何*編譯器,只要它是一個C++編譯器... – 2012-03-02 04:57:29

+0

@CarlNorum yes true我正在糾正。 – talnicolas 2012-03-02 04:58:23

+0

我明白..但我需要知道如何將字符串轉換爲浮動在gcc編譯器中。 – srinathmkce 2012-03-02 05:13:32

0

下面的例子適用於g ++。


std::string asd="12312332434"; 
    float as; 
    istringstream a; 
    a.str(asd); 
    a>>as; 
    cout<<as; 

下面的例子必須GCC做工精細。


//#include <stdio.h> 
//#include <stdlib.h> 
char asd[10]; 
float i; 
fgets (asd, 10, stdin); 
i = atoi (asd); 
+0

我需要包含哪個頭文件?再次,它不工作在海灣合作委員會我認爲。請幫助 – srinathmkce 2012-03-02 05:22:39

+0

@srinathmkce我編輯了我的答案,檢查它。 – ddacot 2012-03-02 05:27:04

0

gcc器基於文件擴展名的語言,因此它可以編譯 C++。但是,您需要告訴它鏈接到libstdC++。

例如:

gcc -o test test.cc -lstdc++ 

但是,我不知道你爲什麼會這麼做。

+0

太棒了,謝謝。 – srinathmkce 2012-03-02 05:30:07