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

+1

また、 '#include ' –

+0

が必要ですか? C++を記述してCコンパイラでコンパイルすることはできません。あなたは、Javaコンパイラを使ってコンパイルしようとするだけの運があるでしょう。 –

答えて

4

はあなたがg ++(または任意のC++コンパイラ)を使用する必要がありますので、それは、ライブラリstdのC++バージョンでリンクします。 CコンパイラでC++コードをコンパイルしないでください。

+1

実際には、OPはC++コンパイラであれば、*任意の*コンパイラを使用する可能性があります。 –

+0

@CarlNorumはいtrue修正中です。 – talnicolas

+0

私は理解していますが、gccコンパイラで文字列を浮動小数点に変換する方法を知る必要があります。 – srinathmkce

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

どのヘッダファイルに含める必要がありますか?再び、gccで動作していないと思います。助けてください – srinathmkce

+0

@ srinathmkce私は私の答えを編集した、それをチェックしました。 – ddacot

0

gccファイルの拡張子に基づいて言語を検出し、それは C++をコンパイルすることができます。ただし、libstdC++とリンクするように指示する必要があります。例えば

gcc -o test test.cc -lstdc++ 

は、しかし、私はなぜあなたはこれを行うだろうかわかりません。

+0

素晴らしいです、ありがとうございます。 – srinathmkce

関連する問題