Je possède ce code:contenu Parse de tableau C++
cout << "Your Value is: ";
for (int x = nStart + 1; x < sBuffer.length(); x++)
{
if (sBuffer[ x ] == ',')
{
nStart = x;
break;
}
cout << sBuffer[ x ];
}
// setprecision doesnt work right when used with [] but i try anyway..
cout << setprecision(2) << sBuffer[ x ];
Et mon sBuffer [x] contient une valeur double, disons, 4,1415679
Je veux utiliser SetPrecision (2) pour afficher seulement 4,14
Je suis coincé, que puis-je faire?
il ne contient pas un double parce que je suis en train de lire un fichier texte, que j'ai oublié de mentionner désolé.
mon fichier texte a ce format:
chaîne, une chaîne de caractères, 49,59494, 29,4094944
stocker chaque champ avant une virgule dans le sBuffer [x].
donc j'ai en fait un double. La raison pour laquelle je pense que ça ne marche pas, c'est que le compilateur l'interprète comme une chaîne, ou un caractère, et non une double valeur.
à droite?
Heres mon code complet ne hésitez pas à compiler en dev ou quelque chose, mais assurez-vous d'utiliser le fichier texte avec ce format:
cordes, ficelle, 54.2345,34.6654 ...
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <iomanip>
#include <cstdlib>
using namespace std;
int main()
{
string usrFileStr,
fileStr = "test.txt", // declaring an obj string literal
sLine, // declaring a string obj
sBuffer;
int lineCount = 1;
fstream inFile; // declaring a fstream obj
// cout is the name of the output stream
cout << "Enter a file: ";
cin >> usrFileStr;
inFile.open(usrFileStr.c_str(), ios::in);
// at this point the file is open and we may parse the contents of it
while (getline (inFile, sBuffer) && !inFile.eof())
{
int nStart = -1 ;
cout << "First String " << lineCount << " (";
for (int x = nStart + 1; x < sBuffer.length(); x++)
{
if (sBuffer[ x ] == ',')
{
nStart = x;
break;
}
cout << sBuffer[ x ];
}
cout << ") ";
for (int x = nStart + 1; x < sBuffer.length(); x++)
{
if (sBuffer[ x ] == ',')
{
nStart = x;
break;
}
cout << sBuffer[ x ];
}
cout << " (First dValue";
for (int x = nStart + 1; x < sBuffer.length(); x++)
{
if (sBuffer[ x ] == ',')
{
nStart = x;
break;
}
cout << setprecision(2) << sBuffer[ x ];
}
cout << ", Second dValue: ";
for (int x = nStart + 1; x < sBuffer.length(); x++)
{
if (sBuffer[ x ] == ',')
{
nStart = x;
break;
}
cout << sBuffer[ x ];
}
cout << ") \n";
lineCount++;
}
cout << "There are a Total of: " << lineCount << " line(s) in the file."
<< endl;
inFile.clear(); // clear the file of any errors
inFile.close(); // at this point we are done with the file and we close it
fgetc(stdin);
return 0;
}
// use a funnction
Ouais je sais que je pourrais utiliser un prototype de fonction pour la boucle excessive (4) Mais je voudrais d'abord prendre soin de cette question de valeur.