C : değişken 'std::' başlatıcı ama eksik olan ifstream eğerler yazın
Üzgünüm bu güzel noobish, ama C için yeni sayılırım . Bir dosya açın ve ifstream
kullanarak okumaya çalışıyorum:
vector<string> load_f(string file) {
vector<string> text;
ifstream ifs(file);
string buffer, str_line;
int brackets = 0;
str_line = "";
while ( getline(ifs, buffer) ) {
buffer = Trim( buffer );
size_t s = buffer.find_first_of("()");
if (s == string::npos) str_line = "" buffer;
else {
while ( s != string::npos ) {
str_line = "" buffer.substr(0, s 1);
brackets = (buffer[s] == '(' ? 1 : -1);
if ( brackets == 0 ) {
text.push_back( str_line );
str_line = "";
}
buffer = buffer.substr(s 1);
s = buffer.find_first_of("()");
}
}
}
return text;
}
Ancak, düzeltmek için nasıl emin değilim ama aşağıdaki hatayı alıyorum:
variable 'std::ifstream ifs' has initializer but incomplete type
Cevapları çok takdir ettim. Hiç hata sadece başlığını da unutma nedeniyle aldık, çünkü #include <fstream>
, unuttum unutmayın.
DÜZENLEME:
Ben aslında fstream
, eklemeyi unuttun çıkıyor ama başka bir dosyaya işlevi hareket nedeniyle unutmuşum.
CEVAP
Çift vektörler vektörler çiftleri olarak depolanır neden bilmiyorum, ama kolayca veri elemanları sırayla saklamak için örnekleri yazabilirsiniz.
{-# LANGUAGE TypeFamilies, MultiParamTypeClasses #-}
import qualified Data.Vector.Generic as G
import qualified Data.Vector.Generic.Mutable as M
import Control.Monad (liftM, zipWithM_)
import Data.Vector.Unboxed.Base
data Point3D = Point3D {-# UNPACK #-} !Int {-# UNPACK #-} !Int {-# UNPACK #-} !Int
newtype instance MVector s Point3D = MV_Point3D (MVector s Int)
newtype instance Vector Point3D = V_Point3D (Vector Int)
instance Unbox Point3D
Bu noktada son satırı Point3D için vektör türlerinin örnekleri vardır beri hiç bir hata neden olur. Aşağıdaki gibi yazılabilir
instance M.MVector MVector Point3D where
basicLength (MV_Point3D v) = M.basicLength v `div` 3
basicUnsafeSlice a b (MV_Point3D v) = MV_Point3D $ M.basicUnsafeSlice (a*3) (b*3) v
basicOverlaps (MV_Point3D v0) (MV_Point3D v1) = M.basicOverlaps v0 v1
basicUnsafeNew n = liftM MV_Point3D (M.basicUnsafeNew (3*n))
basicUnsafeRead (MV_Point3D v) n = do
[a,b,c] <- mapM (M.basicUnsafeRead v) [3*n,3*n 1,3*n 2]
return $ Point3D a b c
basicUnsafeWrite (MV_Point3D v) n (Point3D a b c) = zipWithM_ (M.basicUnsafeWrite v) [3*n,3*n 1,3*n 2] [a,b,c]
instance G.Vector Vector Point3D where
basicUnsafeFreeze (MV_Point3D v) = liftM V_Point3D (G.basicUnsafeFreeze v)
basicUnsafeThaw (V_Point3D v) = liftM MV_Point3D (G.basicUnsafeThaw v)
basicLength (V_Point3D v) = G.basicLength v `div` 3
basicUnsafeSlice a b (V_Point3D v) = V_Point3D $ G.basicUnsafeSlice (a*3) (b*3) v
basicUnsafeIndexM (V_Point3D v) n = do
[a,b,c] <- mapM (G.basicUnsafeIndexM v) [3*n,3*n 1,3*n 2]
return $ Point3D a b c
Fonksiyon tanımları çoğu kendi kendini açıklayıcı olduğunu düşünüyorum. Puan vector in bir vektör olarak saklanır ve son noktası 3,3 1,3 n 2 değer vermez.
Liste, IList, IEnumerable, IQueryable,...
bul: bağımsız değişken arkaplan eksik...
Nasıl global bir değişken ana adı yeri...
Bu başvurular bu bilgisayarda eksik ol...
Swift : eksik değişken 'xxx'...